﻿using System;
using Company.BLL;
using Company.BLL.DuLieuChuan;
using Company.BLL.KDT.SXXK;
using Janus.Windows.GridEX;
using Janus.Windows.UI.CommandBars;

namespace Company.Interface.KDT.SXXK
{
    public partial class DinhMucDangKyDetailForm : BaseForm
    {
        public DinhMucDangKy DMDangKy = new DinhMucDangKy();
        private string maSP = "";
        //-----------------------------------------------------------------------------------------
        public DinhMucDangKyDetailForm()
        {
            InitializeComponent();
        }

        //-----------------------------------------------------------------------------------------
        private void DinhMucDangKyDetailForm_Load(object sender, EventArgs e)
        {
            this.DMDangKy.LoadDMCollection();
            dgList.DataSource = this.DMDangKy.DMCollection;
            switch (this.DMDangKy.TrangThaiXuLy)
            {                
                case -1:
                    lblTrangThai.Text = "Chưa gửi thông tin";
                    break;
                case 0:
                    lblTrangThai.Text = "Chờ duyệt chính thức";
                    break;
                case 1:
                    lblTrangThai.Text = "Đã duyệt chính thức";
                    break;
                case 2:
                    lblTrangThai.Text = "Không phê duyệt";
                    break;
               

            }
            txtSoTiepNhan.Text = this.DMDangKy.SoTiepNhan.ToString();
            txtMaHaiQuan.Text = this.DMDangKy.MaHaiQuan;
            txtTenHaiQuan.Text = DonViHaiQuan.GetName(this.DMDangKy.MaHaiQuan);

            if (this.OpenType == OpenFormType.View)
            {
                TopRebar1.Visible = false;
                dgList.AllowDelete = InheritableBoolean.False;
            }
            else
            {
                TopRebar1.Visible = true;
                dgList.AllowDelete = InheritableBoolean.True;
            }
        }

        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Thêm mới nguyên phụ liệu.
        /// </summary>
        private void add()
        {
            DinhMucEditForm f = new DinhMucEditForm();
            f.OpenType = OpenFormType.Insert;
            f.maSP = this.maSP;
            f.MaHaiQuan = txtMaHaiQuan.Text;
            f.MaDoanhNghiep = GlobalSettings.MA_DON_VI;
            f.DMCollection = this.DMDangKy.DMCollection;
            f.dmDangKy = DMDangKy;
            f.ShowDialog();

            if (f.DMDetail != null && f.DMDetail.DinhMucSuDung>0)
            {
                DinhMuc dm = f.DMDetail;
                this.maSP = f.DMDetail.MaSanPham;
                dm.Master_ID = this.DMDangKy.ID;
                this.DMDangKy.DMCollection.Add(dm);
                if (DMDangKy.TrangThaiXuLy == TrangThaiXuLy.CHO_DUYET)
                {                    
                    {
                        DMDangKy.TrangThaiXuLy = TrangThaiXuLy.CHUA_KHAI_BAO;
                        lblTrangThai.Text = "Chưa khai báo";
                        DMDangKy.InsertUpdateFull();
                    }
                }
                else
                    dm.Insert();
                dgList.Refetch();
            }
        }

        //-----------------------------------------------------------------------------------------
        /*
        private void upload()
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                string[] danhsachDaDangKy = new string[0];

                WSForm wsForm = new WSForm();
                wsForm.ShowDialog(this);
                if (!wsForm.IsReady) return;

                int ret = 1;
               // int ret = this.SPDangKy.WSUpload(ref danhsachDaDangKy);

                // Thực hiện kiểm tra.
                switch(ret)
                {
                    case 0:
                        ShowMessage("Cập nhật không thành công!\nCó lỗi hệ thống.", false);
                        this.setNeedUpload(true);
                        break;
                    case 1:
                        ShowMessage("Cập nhật thành công!", false);
                        this.setNeedUpload(false);
                        break;
                    case 2:
                        if (ShowMessage("Cập nhật không thành công!\nDo chứng từ này đã được duyệt rồi.\nVậy bạn có muốn cập nhật dữ liệu từ Hải quan không?", true) == "Yes")
                        {
                            this.DMDangKy.WSDownload();
                        }
                        this.setNeedUpload(false);
                        break;
                    case 3:
                        ShowMessage("Cập nhật không thành công!\nCó một số nguyên phụ liệu đã được đăng ký rồi (các dòng màu đỏ).\nVui lòng kiểm tra lại!", false);
                        this.updateRowsOnGrid(danhsachDaDangKy);
                        this.setNeedUpload(true);
                        break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
        */
        //-----------------------------------------------------------------------------------------

        /*
        /// <summary>
        /// Gửi thông tin đăng ký đến Hải quan.
        /// </summary>
        private void send()
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                this.DMDangKy.LoadDMCollection();
                if (this.DMDangKy.DMCollection.Count == 0)
                {
                    ShowMessage("Danh sách sản phẩm rỗng.\nKhông thể thực hiện khai báo thông tin đến Hải quan.", false);
                    this.Cursor = Cursors.Default;
                    return;
                }

                string[] danhsachDaDangKy = new string[0];

                WSForm wsForm = new WSForm();
                wsForm.ShowDialog(this);
                if (!wsForm.IsReady) return;

               // this.SPDangKy.WSSend(ref danhsachDaDangKy);

                // Thực hiện kiểm tra.
                if (this.DMDangKy.SoTiepNhan == 0)
                {
                    this.updateRowsOnGrid(danhsachDaDangKy);
                    ShowMessage("Đăng ký không thành công!\nDo có các sản phẩm đã được đăng ký rồi.\nVui lòng kiểm tra lại các dòng màu đỏ!", false);
                }
                else
                {
                    ShowMessage("Đăng ký thành công!\nSố tiếp nhận đăng ký điện tử: " + this.DMDangKy.SoTiepNhan, false);
                    cmdAdd.Enabled = cmdSend.Enabled = InheritableBoolean.False;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
        */

        private int getPostion(DinhMuc dm)
        {
            for (int i = 0; i < this.DMDangKy.DMCollection.Count; i++)
            {
                if (this.DMDangKy.DMCollection[i].ID == dm.ID) return i;
            }
            return -1;
        }
        //-----------------------------------------------------------------------------------------
        private void dgList_RowDoubleClick(object sender, RowActionEventArgs e)
        {
            
            if (this.OpenType != OpenFormType.View)
            {
                if (e.Row.RowType == RowType.Record)
                {
                    DinhMucEditForm f = new DinhMucEditForm();
                    DinhMuc tmp = new DinhMuc();
                    f.DMDetail = (DinhMuc) e.Row.DataRow;
                    tmp.MaNguyenPhuLieu = f.DMDetail.MaNguyenPhuLieu;
                    tmp.MaSanPham = f.DMDetail.MaSanPham;
                    tmp.TyLeHaoHut = f.DMDetail.TyLeHaoHut;
                    tmp.DinhMucSuDung = f.DMDetail.DinhMucSuDung;
                    f.MaHaiQuan = txtMaHaiQuan.Text;
                    f.OpenType = OpenFormType.Edit;
                    int i = getPostion(f.DMDetail);
                    f.DMCollection = DMDangKy.DMCollection;
                    f.DMCollection.RemoveAt(i);
                    f.dmDangKy = DMDangKy;
                    f.ShowDialog();
                    if (f.DMDetail != null)
                    {                        
                        DMDangKy.DMCollection.Add(f.DMDetail);
                        if (tmp.MaNguyenPhuLieu != f.DMDetail.MaNguyenPhuLieu || tmp.MaSanPham != f.DMDetail.MaSanPham || tmp.TyLeHaoHut != f.DMDetail.TyLeHaoHut || tmp.DinhMucSuDung != f.DMDetail.DinhMucSuDung)
                        {
                            DMDangKy.TrangThaiXuLy = TrangThaiXuLy.CHUA_KHAI_BAO;
                            lblTrangThai.Text = "Chưa khai báo";
                            DMDangKy.InsertUpdateFull();
                        }
                    }
                }
                dgList.Refetch();
   
            }
        }

        //-----------------------------------------------------------------------------------------
        private void cmMain_CommandClick(object sender, CommandEventArgs e)
        {
            switch (e.Command.Key)
            {
                case "cmdAdd":
                    this.add();
                    break;
            }
        }

        private void dgList_DeletingRecord(object sender, RowActionCancelEventArgs e)
        {
            if (e.Row.RowType == RowType.Record)
            {
                if (ShowMessage("Bạn có muốn xóa sản phẩm này không?", true) == "Yes")
                {
                    DinhMuc dm = (DinhMuc) e.Row.DataRow;
                    if (dm.ID > 0)
                    {
                        dm.Delete();
                        DMDangKy.TrangThaiXuLy = TrangThaiXuLy.CHUA_KHAI_BAO;
                        DMDangKy.InsertUpdate();
                        lblTrangThai.Text = "Chưa khai báo";                  
                    }
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

        private void dgList_DeletingRecords(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (ShowMessage("Bạn có muốn xóa sản phẩm này không?", true) == "Yes")
            {
                GridEXSelectedItemCollection items = dgList.SelectedItems;
                foreach (GridEXSelectedItem i in items)
                {
                    if (i.RowType == RowType.Record)
                    {
                        DinhMuc dm = (DinhMuc)i.GetRow().DataRow;
                        if (dm.ID > 0)
                        {
                            dm.Delete();
                        }
                    }
                }
                DMDangKy.TrangThaiXuLy = TrangThaiXuLy.CHO_DUYET;
                DMDangKy.Update();
                lblTrangThai.Text = "Chờ duyệt";
            }
            else
            {
                e.Cancel = true;
            }        
        }
    }
}